﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using CampusSite.Models;
using Campus.Entities;
using System.Web.Security;
namespace CampusSite
{
    public class CampusSiteInitializer : System.Data.Entity.DropCreateDatabaseIfModelChanges<CampusSiteContext>
    {
        protected override void Seed(CampusSiteContext context)
        {
            //base.Seed(context);

            //EstadosResponsable
            //4- Completando Información Alumno (CIA)
            //5- Esperando Aprobación (EA)
            //6- Aprobado  (AP)




            var DiasDeLaSemana = new List<Campus.Entities.DiaDeLaSemana>{
                new Campus.Entities.DiaDeLaSemana{Nombre="Domingo"},
                new Campus.Entities.DiaDeLaSemana{Nombre="Lunes"},
                new Campus.Entities.DiaDeLaSemana{Nombre="Martes"},
                new Campus.Entities.DiaDeLaSemana{Nombre="Miércoles"},
                new Campus.Entities.DiaDeLaSemana{Nombre="Jueves"},
                new Campus.Entities.DiaDeLaSemana{Nombre="Viernes"},
                new Campus.Entities.DiaDeLaSemana{Nombre="Sábado"}
            };
            DiasDeLaSemana.ForEach(d => context.DiasDeLaSemana.Add(d));

            var Escuelas = new List<Campus.Entities.Escuela>
            {
                new Campus.Entities.Escuela{Nombre = "Escuela 1"},
                new Campus.Entities.Escuela{Nombre = "Escuela 2"}
            };

            Escuelas.ForEach(e => context.Escuelas.Add(e));

            var ObrasSoc = new List<Campus.Entities.ObraSocial>{
                new Campus.Entities.ObraSocial{ Nombre ="OSDE"},
                new Campus.Entities.ObraSocial{ Nombre ="Swiss Medical"}
            };
            ObrasSoc.ForEach(o => context.ObrasSociales.Add(o));

            var FrecuenciaPago = new List<Campus.Entities.FrecuenciaDePago>{
                new Campus.Entities.FrecuenciaDePago{Nombre = "Mensual"},
                new Campus.Entities.FrecuenciaDePago{Nombre = "Anual"}
            };
            FrecuenciaPago.ForEach(fp => context.FrecuenciasDePago.Add(fp));
           
            var profesores = new List<Campus.Entities.Profesor>{
                    new Campus.Entities.Profesor{Apellido = "Apeprof1", Email="prof1@email.com", Nombre = "nombre1"},
                    new Campus.Entities.Profesor{Apellido = "Apeprof2", Email="prof2@email.com", Nombre = "nombre2"},
                    new Campus.Entities.Profesor{Apellido = "Apeprof3", Email="prof3@email.com", Nombre = "nombre3"},
                    new Campus.Entities.Profesor{Apellido = "Apeprof4", Email="prof4@email.com", Nombre = "nombre4"}
            };
            profesores.ForEach(p => context.Profesores.Add(p));

            //voy a crear 5 estudiantes entonces creo 5 documentaciones y 5 responsables

            var documentaciones = new List<Campus.Entities.Documentacion>{
                new Documentacion{ Anio = 2012, AutorizacionTorneo = false, CertificadoMedico = false, FichaFirmada = false, FotoEntregada = false},
                new Documentacion{ Anio = 2012, AutorizacionTorneo = false, CertificadoMedico = false, FichaFirmada = false, FotoEntregada = false},
                new Documentacion{ Anio = 2012, AutorizacionTorneo = false, CertificadoMedico = false, FichaFirmada = false, FotoEntregada = false},
                new Documentacion{ Anio = 2012, AutorizacionTorneo = false, CertificadoMedico = false, FichaFirmada = false, FotoEntregada = false},
                new Documentacion{ Anio = 2012, AutorizacionTorneo = false, CertificadoMedico = false, FichaFirmada = false, FotoEntregada = false}
            };
            documentaciones.ForEach(d => context.Documentaciones.Add(d));
            context.SaveChanges();

            var users = new List<User>
            {
                new User{ UserName="admin@gmail.com", Rol="Administrador", Password="1234", Confirmado=true},
                new User{ UserName="nicolas@gmail.com", Rol="Responsable", Password="1234", Confirmado=true}
            
            };

            users.ForEach(u => context.Users.Add(u));

            var responsables = new List<Campus.Entities.Responsable>(){
                    new Responsable{ Apellido = "ApellidoResp1", CodigoPostal = "0000", Direccion = "Default1", DNI = 111111, Email = "admin@gmail.com", Localidad = "Default", Nombre = "NombreResp1", Telefono = "12345671", Usuario=users[0], Estado = (int)Constantes.EstadosResponsable.Inicial, FechaCreacion= DateTime.MaxValue, FechaAprobacion= DateTime.MaxValue, FechaEsperandoAprobacion= DateTime.MaxValue},
                    new Responsable{ Apellido = "ApellidoResp2", CodigoPostal = "0000", Direccion = "Default2", DNI = 111112, Email = "nicolas@gmail.com", Localidad = "Default", Nombre = "NombreResp2", Telefono = "12345672", Usuario=users[1], Estado = (int)Constantes.EstadosResponsable.Inicial, FechaCreacion= DateTime.MaxValue, FechaAprobacion= DateTime.MaxValue, FechaEsperandoAprobacion= DateTime.MaxValue}//,
                    //new Responsable{ Apellido = "ApellidoResp3", CodigoPostal = "0000", Direccion = "Default3", DNI = 111113, Email = "Default3@email.com", Localidad = "Default", Nombre = "NombreResp3", Telefono = "12345673", Usuario=null, Estado = (int)Constantes.EstadosResponsable.Creado, FechaCreacion= DateTime.MaxValue, FechaAprobacion= DateTime.MaxValue, FechaEsperandoAprobacion= DateTime.MaxValue},
                    //new Responsable{ Apellido = "ApellidoResp4", CodigoPostal = "0000", Direccion = "Default4", DNI = 111114, Email = "Default4@email.com", Localidad = "Default", Nombre = "NombreResp4", Telefono = "12345674", Usuario=null, Estado = (int)Constantes.EstadosResponsable.Creado, FechaCreacion= DateTime.MaxValue, FechaAprobacion= DateTime.MaxValue, FechaEsperandoAprobacion= DateTime.MaxValue},
                    //new Responsable{ Apellido = "ApellidoResp5", CodigoPostal = "0000", Direccion = "Default5", DNI = 111115, Email = "Default5@email.com", Localidad = "Default", Nombre = "NombreResp5", Telefono = "12345675", Usuario=null, Estado = (int)Constantes.EstadosResponsable.Creado, FechaCreacion= DateTime.MaxValue, FechaAprobacion= DateTime.MaxValue, FechaEsperandoAprobacion= DateTime.MaxValue}
            };
           responsables.ForEach(r => context.Responsables.Add(r));
           context.SaveChanges();


            

            var actividades = new List<Campus.Entities.Actividad>
            {
                new Campus.Entities.Actividad{Nombre = "Escuela de Futbol",FrecuenciaDePagoId = 1},
                new Campus.Entities.Actividad{Nombre = "Torneo", FrecuenciaDePagoId = 2}
            };

            actividades.ForEach(a => context.Actividades.Add(a));


            var estudiantes = new List<Campus.Entities.Estudiante> { 
                new Campus.Entities.Estudiante{Apellido = "Rey", Nombre="Claudio", DNI=12345678, FechaIngreso = DateTime.Now, FechaNacimiento=new DateTime(1980, 3, 17), ObraSocialId = 1, Responsable = responsables[0], EscuelaId = 1,  Documentacion = documentaciones[0], CuotaMensual = 300f, CuotaAnual =150f, Estado = Estudiante.EstadosEstudiante.Inscripto},
                new Campus.Entities.Estudiante{Apellido = "Rey", Nombre="Bauttista", DNI=40345678, FechaIngreso = DateTime.Now, FechaNacimiento=new DateTime(2000, 10, 12), ObraSocialId = 1, Responsable = responsables[1], EscuelaId = 2, Documentacion = documentaciones[1], CuotaMensual = 200f, CuotaAnual =150f, Estado = Estudiante.EstadosEstudiante.Inscripto},
                new Campus.Entities.Estudiante{Apellido = "Juiz", Nombre="Mariano", DNI=12345679, FechaIngreso = DateTime.Now, FechaNacimiento=new DateTime(1980, 11, 19), ObraSocialId = 1, Responsable = responsables[0], EscuelaId = 1, Documentacion = documentaciones[2], CuotaMensual = 250f, CuotaAnual =150f, Estado = Estudiante.EstadosEstudiante.Inscripto},
                new Campus.Entities.Estudiante{Apellido = "Juiz", Nombre="Joaquin", DNI=42345678, FechaIngreso = DateTime.Now, FechaNacimiento=new DateTime(2002, 6, 15), ObraSocialId = 1, Responsable = responsables[1], EscuelaId = 2, Documentacion = documentaciones[3], CuotaMensual = 250f, CuotaAnual =150f, Estado = Estudiante.EstadosEstudiante.Inscripto},
                new Campus.Entities.Estudiante{Apellido = "Toloza", Nombre="Pablo", DNI=28345678, FechaIngreso = DateTime.Now, FechaNacimiento=new DateTime(1981, 2, 1), ObraSocialId = 1, Responsable = responsables[0], EscuelaId = 1, Documentacion = documentaciones[4], CuotaMensual = 200f, CuotaAnual =150f, Estado = Estudiante.EstadosEstudiante.Inscripto}
            };

            estudiantes.ForEach(e => context.Estudiantes.Add(e));

            //Grupos                        
            var grupos = new List<Grupo>
            {
               new Grupo{Nombre="Clase 06", Actividad = actividades[0], Estudiantes = new List<Estudiante> {estudiantes[0], estudiantes[1]}, Profesores= new List<Profesor>{profesores[0], profesores[1]}},
               new Grupo{Nombre="Clase 05", Actividad = actividades[0], Estudiantes = new List<Estudiante> {estudiantes[2], estudiantes[3], estudiantes[4]}, Profesores= new List<Profesor>{profesores[0], profesores[1]}},
               new Grupo{Nombre="Torneo 06", Actividad = actividades[1], Estudiantes = new List<Estudiante> {estudiantes[0], estudiantes[1]}, Profesores= new List<Profesor>{profesores[0], profesores[1]}},
               new Grupo{Nombre="Torneo 05/06", Actividad = actividades[1], Estudiantes = new List<Estudiante> {estudiantes[2], estudiantes[3], estudiantes[4]}, Profesores= new List<Profesor>{profesores[0], profesores[1]}},               
            };
            
            grupos.ForEach(g => context.Grupos.Add(g));

            //Turnos

            var turnos = new List<Turno> 
            { 
            
                new Turno{ DiaDeLaSemana= DiasDeLaSemana[1], HoraInicio=new DateTime(2006,06,15,18,00,00) , HoraFin= new DateTime(2006,06,15,19,30,00), Grupo = grupos[0]},
                new Turno{ DiaDeLaSemana= DiasDeLaSemana[6], HoraInicio=new DateTime(2006,06,15,11,30,00) , HoraFin= new DateTime(2006,06,15,13,00,00), Grupo = grupos[0]},
                new Turno{ DiaDeLaSemana= DiasDeLaSemana[1], HoraInicio=new DateTime(2006,06,15,18,00,00) , HoraFin= new DateTime(2006,06,15,19,30,00), Grupo = grupos[1]},
                new Turno{ DiaDeLaSemana= DiasDeLaSemana[6], HoraInicio=new DateTime(2006,06,15,11,30,00) , HoraFin= new DateTime(2006,06,15,13,00,00), Grupo = grupos[1]},
                new Turno{ DiaDeLaSemana= DiasDeLaSemana[6], HoraInicio=new DateTime(2006,06,15,14,00,00) , HoraFin= new DateTime(2006,06,15,15,30,00), Grupo = grupos[2]},
                new Turno{ DiaDeLaSemana= DiasDeLaSemana[6], HoraInicio=new DateTime(2006,06,15,16,00,00) , HoraFin= new DateTime(2006,06,15,17,30,00), Grupo = grupos[3]}            
            };

            turnos.ForEach(t => context.Turnos.Add(t));




            context.SaveChanges();

            

        }



    }
}